#ifndef WINDOWMGR_H
#define WINDOWMGR_H

#include <vector>
#include <string>
#include <iostream>
#include "Screen.h"

class WindowMgr
{
public:
    // 窗口中每个屏幕的编号
    using ScreenIndex = std::vector<Screen>::size_type;
    // 向窗口添加一个Screen，返回它的编号
    ScreenIndex addScreen(const Screen&);
    // 按照编号将指定的Screen重置为空白
    void clear(ScreenIndex);
private:
    // 这个WindowMgr追踪的Screen
    // 默认情况下,一个WindowMgr包含一个标准尺寸的空白Screen
    std::vector<Screen> screens{Screen(24, 80, ' ')};
};

void WindowMgr::clear(ScreenIndex i)
{
    // s是一个Screen的引用，指向我们想清空的那个屏幕
    Screen &s = screens[i];
    // 将那个选定的Screen重置为空白
    s.contents = std::string(s.height * s.width, ' ');
}
// 首先处理返回类型，之后才进入WindowMgr的作用域
WindowMgr::ScreenIndex WindowMgr::addScreen(const Screen &s)
{
    screens.push_back(s);
    return screens.size() - 1;
}


#endif